# 如何使用机器学习求两个数的和

# 导入库
# 使用这些命令导入 numpy 和 keras 库：
import numpy as np
from keras.models import Sequential
from keras.layers import Dense

# 导入要求的库
# 准备数据
# 机器学习模型的准确性有赖于训练模型的数据。

# 为了创建我们在这里需要的加法数据，让我们创建 1000 对随机数字作为输入。输出将是每对数字之和。
num_samples = 1000
X_train = np.random.rand(num_samples, 2)
y_train = X_train[:, 0] + X_train[:, 1]

# 生成输入数据集
# 定义神经网络
# 让我们构建一个有两个输入层的神经网络——一个有 8 个神经元的隐藏层和一个有单个神经元的输出层。我们将使用 “relu” 激活函数。
model = Sequential()
model.add(Dense(8, input_shape=(2,), activation='relu'))
model.add(Dense(1))

# 定义有 2 个输入层的模型
# 编译模型
# 使用 MSE（均方误差）作为损失函数和 Adam 优化器编译模型。
model.compile(loss='mse', optimizer='adam')

# 使用 MSE 编译模型
# 训练模型
# 对模型进行 100 轮训练，批次数量为 32。
batch_size = 32
epochs = 100
model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1)

# 训练模型
# 这可能需要几秒钟，取决于你的 CPU 配置。我的笔记本电脑大约需要 10 到 15 秒才能完成。

# 测试模型
# 现在我们已经训练好了模型，让我们用一些自定义输入来测试它。我使用了两个输入，但你也可以使用任意数量的输入来测试你的模型。
test_input = np.array([[1, 2], [0.3, 0.4]])
predicted_sum = model.predict(test_input)

# 通过自定义输入预测输出
# 打印数值
# 预测已经完成。让我们打印预测值，看看它们是否正确：
print("Predicted sums:")
print(predicted_sum)
# 打印预测的总和
